onErrorReturn(), onErrorResumeNext(), এবং retry() এর ব্যবহার

Java Technologies - আরএক্সজাভা (RxJava) - Error Handling
192

আরএক্সজাভা (RxJava) তে ডেটা স্ট্রিম প্রসেস করার সময় বিভিন্ন ধরনের এরর (error) ঘটতে পারে। এই ধরনের পরিস্থিতি মোকাবেলা করার জন্য RxJava কিছু গুরুত্বপূর্ণ অপারেশন প্রদান করে, যেমন onErrorReturn(), onErrorResumeNext(), এবং retry()। এগুলি ব্যবহার করে আমরা ইরর হ্যান্ডলিং এবং ডেটা স্ট্রিম পুনরায় চেষ্টা করতে পারি।


onErrorReturn()

onErrorReturn() একটি অপারেশন যা একটি এরর ঘটলে কাস্টম ভ্যালু রিটার্ন করে। যখন কোনো Observable তে এরর ঘটে, তখন এটি অবিলম্বে একটি নির্দিষ্ট ভ্যালু ফেরত পাঠায় এবং স্ট্রিমের পরবর্তী অংশে এগোতে থাকে। এটি শুধুমাত্র একটি কাস্টম ফলাফল দিয়ে স্ট্রিমটি শেষ করতে সাহায্য করে।

ব্যবহার

Observable<Integer> observable = Observable.create(emitter -> {
    emitter.onNext(1);
    emitter.onNext(2);
    emitter.onError(new Throwable("Something went wrong"));
});

observable
    .onErrorReturn(throwable -> -1)  // Default value when error occurs
    .subscribe(
        item -> System.out.println("Received: " + item),
        throwable -> System.out.println("Error: " + throwable)
    );

এখানে, যদি কোন এরর ঘটে, তবে -1 ভ্যালু রিটার্ন করা হবে।


onErrorResumeNext()

onErrorResumeNext() একটি অপারেশন যা একটি এরর ঘটলে একটি নতুন Observable কে স্যুইচ করে দেয়। অর্থাৎ, যখন কোনো Observable তে এরর ঘটে, তখন এটি একটি নতুন স্ট্রিম শুরু করে, যেখানে আপনি আবার নতুন ডেটা প্রাপ্তি শুরু করতে পারেন। এটি onErrorReturn() এর চেয়ে আরও বেশি ফ্লেক্সিবল কারণ এটি সম্পূর্ণ নতুন ডেটা স্ট্রিম প্রদান করে।

ব্যবহার

Observable<Integer> observable = Observable.create(emitter -> {
    emitter.onNext(1);
    emitter.onNext(2);
    emitter.onError(new Throwable("Something went wrong"));
});

observable
    .onErrorResumeNext(Observable.just(100, 200))  // Switch to a new Observable when error occurs
    .subscribe(
        item -> System.out.println("Received: " + item),
        throwable -> System.out.println("Error: " + throwable)
    );

এখানে, যদি কোন এরর ঘটে, তাহলে 100 এবং 200 সংখ্যাগুলি একটি নতুন স্ট্রিম থেকে রিটার্ন হবে।


retry()

retry() অপারেশনটি একটি শক্তিশালী মেকানিজম যা একটি এরর ঘটলে পুনরায় চেষ্টা করার (retry) সুযোগ প্রদান করে। এটি একাধিক বার চেষ্টা করতে পারে নির্দিষ্ট পরিমাণে অথবা একদম অসীম পরিমাণে, যতবার না ডেটা সফলভাবে পাঠানো হয়। retry() সাধারণত নেটওয়ার্ক সম্পর্কিত ত্রুটি (error) বা অস্থায়ী সমস্যা ম্যানেজ করার জন্য ব্যবহৃত হয়।

ব্যবহার

Observable<Integer> observable = Observable.create(emitter -> {
    emitter.onNext(1);
    emitter.onNext(2);
    emitter.onError(new Throwable("Network error"));
});

observable
    .retry(3)  // Retry up to 3 times if an error occurs
    .subscribe(
        item -> System.out.println("Received: " + item),
        throwable -> System.out.println("Error: " + throwable)
    );

এখানে, যদি প্রথমবার এরর ঘটে, তবে এটি ৩ বার পর্যন্ত পুনরায় চেষ্টা করবে এবং তারপর ত্রুটি বার্তা প্রদর্শিত হবে।


উপসংহার

RxJava তে onErrorReturn(), onErrorResumeNext(), এবং retry() অপারেশনগুলি খুবই কার্যকরী। onErrorReturn() এর মাধ্যমে আপনি একটি কাস্টম ভ্যালু রিটার্ন করতে পারেন, onErrorResumeNext() নতুন স্ট্রিম ব্যবহার করতে সহায়ক, এবং retry() পুনরায় চেষ্টা করার জন্য উপযোগী। এগুলোর মাধ্যমে আপনি আরও শক্তিশালী এবং রিয়্যাকটিভ অ্যাপ্লিকেশন তৈরি করতে পারবেন, যেখানে ডেটার ত্রুটি বা ব্যর্থতার সত্ত্বেও অ্যাপ্লিকেশন চলমান থাকতে পারে।


Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...